const express = require('express');
const router = express.Router();
const tokenController = require('../controllers/tokenController');
const { verifyVisitorToken } = require('../middlewares/authMiddleware');

// ========== 传统代币操作 ==========
// 直接消费代币（传统方式，保留兼容性）
router.post('/consume', tokenController.consumeTokens);

// 获取用户代币信息
router.post('/info', tokenController.getUserTokenInfo);

// 获取用户代币交易记录
router.get('/transactions', tokenController.getTokenTransactions);

// ========== 预扣代币操作（高并发安全） ==========
// 预扣代币
router.post('/reserve', tokenController.reserveTokens);

// 确认预扣代币使用
router.post('/confirm', tokenController.confirmReservedTokens);

// 取消预扣代币（退还）
router.post('/cancel', tokenController.cancelReservedTokens);

// 获取预扣状态
router.get('/reserve/:reserve_id/status', tokenController.getReserveStatus);

// 获取用户待处理的预扣列表
router.get('/user/:user_uuid/pending-reservations', tokenController.getUserPendingReservations);

// ========== 系统管理操作 ==========
// 清理过期预扣（建议定时任务调用）
router.post('/cleanup-expired', tokenController.cleanupExpiredReservations);

// ========== 代币来源管理 ==========
// 发放购买代币（Stripe支付后）
router.post('/grant/purchased', tokenController.grantPurchasedTokens);

// 发放活动代币
router.post('/grant/promotional', tokenController.grantPromotionalTokens);

// 发放补偿代币
router.post('/grant/compensation', tokenController.grantCompensationTokens);

// 获取详细代币信息（包含来源分类）
router.post('/info-detailed', tokenController.getUserDetailedTokenInfo);

// 获取用户账单记录（需要认证）
router.get('/billing-records', verifyVisitorToken, tokenController.getUserBillingRecords);

// 获取成本分析报告
// router.get('/cost-analysis', tokenController.getTokenCostAnalysis);

// ========== 新增：数据分析接口 ==========
// 用户充值消费行为分析
// router.get('/user-behavior-analysis', tokenController.getUserBehaviorAnalysis);

// // 运营成本分析
// router.get('/operational-cost-analysis', tokenController.getOperationalCostAnalysis);

module.exports = router; 